home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - ProDOS
/
PRO002.dsk
/
PRINTER.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
5KB
|
197 lines
100 REM 'PRINTER' FOR FREEWRITER
110 REM WRITTEN BY PAUL LUTUS
120 D$ = CHR$(4)
130 NORMAL : PRINT CHR$(21): SPEED= 255
140 TEXT : HOME
150 V = 1: GOSUB 160:V = 24: GOSUB 160: GOTO 180
160 VTAB (V): HTAB (1): FOR X = 1 TO 39: PRINT "_";: NEXT
170 RETURN
180 VTAB (5): HTAB (7)
190 PRINT "[ THIS PROGRAM IS FREEWARE ]"
200 PRINT : PRINT : HTAB (4)
210 PRINT "YOU ARE FREE TO DISTRIBUTE COPIES"
220 PRINT : HTAB (8)
230 PRINT "BUT YOU MAY NOT SELL THEM."
240 VTAB (18): HTAB (11)
250 PRINT "THE FREEWARE PROJECT"
260 PRINT : HTAB (11)
270 PRINT "WALDEN SOFTWARE, INC."
280 PRINT : HTAB (12)
290 PRINT "(C) 1984, P. LUTUS"
300 FOR PAUSE = 0 TO 2500: NEXT
310 REM
320 REM SET UP PRINTER PROGRAM
330 REM
340 DIM M$(1,7)
350 DIM V(1,3)
360 V(0,0) = PEEK(48688):V(0,1) = PEEK(48689)
370 FOR X = 0 TO 7
380 READ M$(0,X): READ M$(1,X)
390 NEXT X
400 REM
410 REM INSTALL ERASER
420 REM
430 A = 768
440 READ B
450 POKE A,B
460 A = A +1
470 IF B < >96 THEN 440
480 REM
490 REM TAKE USER'S INPUTS
500 REM
510 PRINT CHR$(27); CHR$(17)
520 FOR X = 0 TO 7
530 HOME
540 PRINT "*** Prepare for Printing ***";
550 GOSUB 890
560 Q$ = M$(1,X)
570 INPUT "";L$
580 IF X = 2 THEN 600
590 IF L$ = "" THEN L$ = M$(1,X)
600 IF X < >0 THEN 660
610 IF L$ < >"?" THEN 650
620 HOME
630 PRINT D$;"CAT,TTXT
640 GOTO 550
650 IF L$ = "Q" OR L$ = "q" THEN HOME : PRINT D$"-STARTUP"
660 IF X < >2 THEN 790
670 IF L$ < >"?" THEN 790
680 HOME
690 PRINT "The (optional) Top Line entry is placed"
700 PRINT "at the top of each page. If you include"
710 PRINT "a '#' in your entry, the page number"
720 PRINT "will be printed at that location."
730 PRINT "Example: 'Page #' will be printed as"
740 PRINT "'Page 1' on the first page, 'Page 2'"
750 PRINT "on the second, and so forth.": PRINT
760 INPUT "(Press Return) :";L$
770 HOME
780 GOTO 550
790 M$(1,X) = L$
800 NEXT X
810 HOME
820 PRINT "Here are your Selections :";
830 X = 7: GOSUB 890
840 PRINT : PRINT
850 INPUT "Are The Selections Okay (Yes/No) :";L$
860 GOSUB 970
870 IF C$ < >"Y" THEN 510
880 GOTO 1250
890 FOR Y = 0 TO X
900 PRINT : PRINT
910 PRINT M$(0,Y);" :";
920 H = PEEK(36)
930 PRINT M$(1,Y);
940 POKE 36,H
950 NEXT Y
960 RETURN
970 C$ = ""
980 IF L$ = "" THEN RETURN
990 C$ = LEFT$(L$,1)
1000 C = ASC(C$)
1010 IF C >96 THEN C = C -32
1020 C$ = CHR$(C)
1030 RETURN
1040 REM
1050 REM THESE ARE THE DEFAULT VALUES
1060 REM
1070 DATA "File Name(?=Catalog,Q=Quit)",""
1080 DATA "Printer Slot (0=Screen)","1"
1090 DATA "Top Line(?=Help)","- # -"
1100 DATA "Left Margin","10"
1110 DATA "Right Margin","70"
1120 DATA "Number of Printed Lines","58"
1130 DATA "Page Length in Lines","66"
1140 DATA "Automatic Paper Feed","No"
1150 REM
1160 REM THIS SECTION PRINTS
1170 REM
1180 POKE (48688),V(Z,0): POKE (48689),V(Z,1)
1190 RETURN
1200 M = LM
1210 IF M = 0 THEN RETURN
1220 FOR X = 1 TO M
1230 PRINT " ";
1240 NEXT : RETURN
1250 PRINT D$;"PR#";M$(1,1)
1260 PRINT
1270 V(1,0) = PEEK(48688):V(1,1) = PEEK(48689)
1280 Z = 0: GOSUB 1180
1290 HOME
1300 PRINT "Loading "; CHR$(34);M$(1,0); CHR$(34)
1310 BA = PEEK(110) +1:BA = BA *256
1320 POKE 0,0
1330 POKE 1,( PEEK(110) +1)
1340 POKE 2,( PEEK(112) -1)
1350 CALL 768
1360 ONERR GOTO 1960
1370 PRINT D$;"BLOAD";M$(1,0);",A";BA;",TTXT,D1"
1380 POKE 216,0
1390 C$ = LEFT$(M$(1,7),1)
1400 SP = 1: IF C$ = "Y" OR C$ = "y" THEN SP = 0
1410 LM = VAL(M$(1,3))
1420 RM = VAL(M$(1,4))
1430 PL = VAL(M$(1,5))
1440 PI = VAL(M$(1,6))
1450 LL = RM -LM
1460 HOME
1470 PRINT "(Press 'ESC' to stop print)": PRINT
1480 INPUT "Press Return to Begin Printing :";L$
1490 Z = 1: GOSUB 1180
1500 P = 1
1510 IF SP = 0 THEN 1550
1520 Z = 0: GOSUB 1180
1530 PRINT CHR$(7): INPUT "Load paper then press Return :";L$
1540 Z = 1: GOSUB 1180
1550 L = 0
1560 IF M$(1,2) = "" THEN 1680
1570 L$ = M$(1,2)
1580 GOSUB 1200
1590 M = ((RM -LM) -( LEN(L$)))/2
1600 GOSUB 1220
1610 FOR X = 1 TO LEN(L$)
1620 C$ = MID$ (L$,X,1)
1630 IF C$ < >"#" THEN PRINT C$;
1640 IF C$ = "#" THEN PRINT P;
1650 NEXT X
1660 PRINT : PRINT
1670 L = L +2
1680 GOSUB 1200
1690 TL = LL -1
1700 X = 0
1710 Q = PEEK(BA +X)
1720 IF Q = 32 THEN TL = X
1730 IF Q = 0 OR Q = 13 THEN TL = X: GOTO 1750
1740 X = X +1: IF X <LL THEN 1710
1750 IF TL = 0 THEN 1830
1760 FOR X = 0 TO TL -1
1770 C = PEEK(BA +X)
1780 PRINT CHR$(C);
1790 NEXT
1800 IF TL < >LL -1 THEN 1830
1810 R = PEEK(BA +TL)
1820 IF R < >32 AND R < >13 THEN 1840
1830 TL = TL +1
1840 BA = BA +TL
1850 PRINT
1860 IF Q = 0 THEN 1930
1870 IF PEEK(49152) = 155 THEN 1930
1880 L = L +1
1890 IF L <PL THEN 1680
1900 IF L <PI THEN 1850
1910 P = P +1
1920 GOTO 1510
1930 Z = 0: GOSUB 1180
1940 POKE 49168,0
1950 GOTO 510
1960 POKE 216,0
1970 PRINT CHR$(7)
1980 PRINT "Error trying to load "; CHR$(34);M$(1,0); CHR$(34)
1990 PRINT
2000 INPUT "(Press Return) :";L$
2010 GOTO 510
2020 REM
2030 REM ERASER CODE
2040 REM
2050 DATA 169,0,168,145,0,200,208,251
2060 DATA 230,1,165,1,197,2,208,240,96